A multi-tenant architecture provides a means for multiple accounts and users to access their data and specific applications that reside on a remote platform that is typically administered by another party. The applications may be used to process certain of a user's data by instantiating an occurrence of the application within the user's account. Although this provides each user or account with a group of applications that may be utilized to operate a business (such as ERP, CRM, eCommerce, and financial applications), in some cases, a tenant may desire to modify or supplement the functionality of an existing platform application by introducing a new application or an extension to an application, where the new application or extension is to be made available to the tenant's employees and/or customers. Note that although portions of the following description refer to an extension to an existing application as a general case, much (if not all) of the description apply to a new application or functional component as well.
In some cases an extension or enhancement may be applied to the processing of the tenant's business related data that is resident on the platform. The extension may be developed by the tenant or by a 3rd party developer and then made available to the tenant for installation. The platform may include a “library” or catalog of available extensions, which can be accessed by a tenant and searched to identify an extension of interest. Software developers may be permitted to “publish” an extension to the library or catalog after appropriate validation of a proposed extension.
Thus, in an effort to permit tenants to obtain the services and functionality that they desire (which may include providing certain services to their end customers, such as functionality associated with an eCommerce platform), a multi-tenant service platform may permit a tenant to select and configure certain aspects of the available service(s) to better suit their business needs. In this way aspects of the service platform may be customizable, and thereby enable a tenant to configure aspects of the platform to provide distinctive services to their respective users or to groups of those users. For example, a business enterprise that uses the service platform may want to provide additional functions or capabilities to their employees and/or customers, or to cause their business data to be processed in a specific way in accordance with a defined workflow that is tailored to their business needs, etc.
Tenant customizations to the platform may include custom functionality (such as the capability to perform tenant or user-specific functions, data processing, or operations) built on top of lower level operating system functions. Some multi-tenant service platforms may offer the ability to customize functions or operations at a number of different levels of the service platform, from aesthetic modifications to a graphical user interface to providing integration of components and/or entire applications developed by independent third party vendors. This can be very beneficial, since by permitting use of components and/or applications developed by third party vendors, a multi-tenant service can significantly enhance the functionality available to tenants and increase tenant satisfaction with the platform.
As noted, in addition to user customizations, an independent software developer may create an extension to an application that is available to users through a multi-tenant data processing platform. The extension may add new functionality or capabilities to the underlying application. One or more tenants/users of the platform may wish to add the extension to the underlying application to be able to utilize the enhancements to the application that are made possible by the extension. Further, the developer may wish to upgrade or provide a patch to the extension as they recognize a need for fixes or additional functionality that would be beneficial to incorporate into the extension. In some cases, the developer may prefer to make the upgrade available to only a select set of users (at least initially) to obtain feedback for improving the newer version of the extension, to test the stability of the extension, or to assist them to segment the market for their extension(s).
In addition to handling upgrades or patches to software code, there is a general need for administrative and management capabilities that enable one or more of a platform administrator, tenant, or the developer of an extension to monitor and control the use of an extension. This task is made more complex and difficult to implement because of the multiplicity of tenants and users, and of the types and number of extensions that may be available. For example, each account (and perhaps even each user within the same account) may have a set of “rights” to use certain aspects of an extension (or a new application, application component, etc.). These rights may change over time, based (for example) on the satisfaction of certain criteria or thresholds, based on the role or function of a user, in response to specific business conditions or events, etc.
However, conventional approaches to the management of such extensions are typically limited and manually intensive, if such capabilities even exist. For example, most applications apply a passive merit based control of use rights, where tenants and users are expected to proactively stop using the solution once their right is revoked. Other extensions utilize a manual periodic access rights review to block the usage by tenants or users whose rights have expired. This results in a lack of an effective and efficient mechanism for managing the set of licensable rights that are applicable to an extension, new application, or application component.
Embodiments of the inventive system and methods are directed to overcoming the limitations associated with conventional approaches to managing the licensing and rights conveyed by a license for use of one or more extensions to the functionality of a multi-tenant platform, both individually and collectively.